// import store from '@/store'
import request from '@/utils/request'
/**
 * 注解接口
 * @param {} param0
 * @returns
 */
export const registerAPI = ({ username, password, repassword }) => {
  // 原地是一个Promise 对象(内部包含原生 ajax 请求)
  // return 这个 Promise 对象到逻辑页面 去那边对 Promise 对象提取结果
  return request({
    // url: 'http://geek.itheima.net/vi_0/channels'
    url: '/api/reg',
    method: 'POST',
    // axios传参params, data
    // params的对象参数名和值 axios源码会把参数和值 拼接在url?后面给后台(query查询字符串)
    // data的对象参数名和值 axios源码会把参数和值 拼接在请求体里(body参数)
    // registerAPI(this.form)
    // registerAPI({
    // username: '',
    // password: '',
    // repassword: ''
    // })
    // 形参 obj 的值
    // obj = { username: '', password: '值', repassword: ''}
    // 左侧想要对象解构赋值(语法)
    // { username: username变量名, password: 变量名, repassword: 变量名 } = { username：'',
    // password: password, repassword: repassword }
    // key 是传入的对象key匹配 value是变量名 用户接受外面传来的值
    // ES6规定 key和value变量同名的时候 可以简写(key既是key 也是value变量名)
    data: {
      username,
      password,
      repassword
    }
  })
}
/**
 * 登录接口
 */
export const loginAPI = ({ username, password }) => {
  return request({
    url: '/api/login',
    method: 'POST',
    data: {
      username,
      password
    }
  })
}
/**
 * 获取用户信息
 * @return Promise对象
 */
export const getUserInfoAPI = () => {
  return request({
    url: '/my/userinfo'
    // 传递的是请求头
    // headers: {
    //   Authorization: store.state.token
    // }
  })
}
/**
 * 获取-侧边栏菜单数据
 * @return Promise对象
 */
export const getMenusAPI = () => {
  return request({
    url: '/my/menus'
    // headers: {
    //   Authorization: store.state.token
    // }
  })
}
// 更新用户信息 这里需要更改配置 .eslintrc.js文件 添加camelcase: 'off'并重启服务器
export const updateUserInfoAPI = ({ id, username, nickname, email, user_pic }) => {
  return request({
    url: '/my/userinfo',
    method: 'PUT',
    data: {
      id,
      username,
      nickname,
      email,
      user_pic
    }
  })
}
/**
 * 更新-用户头像
 * @param {*} avatar 头像的base64字符串
 * @returns Promise对象
 */
export const updateAvatarAPI = (avatar) => {
  return request({
    url: '/my/update/avatar',
    method: 'PATCH',
    data: {
      avatar
    }
  })
}
/**
 * 更新密码
 * @param {*} param0
 * @returns
 */
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd }) => {
  return request({
    url: '/my/updatepwd',
    method: 'PATCH',
    data: {
      old_pwd,
      new_pwd,
      re_pwd
    }
  })
}
/**
 * 获取-文章分类
 * @returns Promise对象
 */
export const getArtCateListAPI = () => {
  return request({
    url: '/my/cate/list'
  })
}
/**
 * 增加-文章分类
 * @param {*} param0 { cate_name: 文章分类名字, cate_alias: 文章分类别名 }
 * @returns Promise对象
 */
export const addArtCateAPI = ({ cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/add',
    method: 'POST',
    data: {
      cate_name,
      cate_alias
    }
  })
}
/**
 * 更新-文章分类
 * @param {*} param0 { id: 文章分类id, cate_name: 文章分类名字, cate_alias: 文章分类别名 }
 * @returns Promise对象
 */
export const updateArtCateAPI = ({ id, cate_name, cate_alias }) => {
  return request({
    url: '/my/cate/info',
    method: 'PUT',
    data: {
      id,
      cate_name,
      cate_alias
    }
  })
}
/**
 * 删除-文章分类
 * @param {*} id 要删除的-文章分类id
 * @returns Promise对象 传的是query 参数 用 params
 */
export const delArtCateAPI = (id) => {
  return request({
    url: '/my/cate/del',
    method: 'DELETE',
    params: {
      id
    }
  })
}
/**
 * 发布文章
 * @param {*} fd 表单对象
 * @returns Promise对象
 */
export const uploadArticleAPI = (fd) => {
  return request({
    url: '/my/article/add',
    method: 'POST',
    data: fd // 参数要的是表单对象, 不能写普通对象, axios内部会判断, 如果是表单对象, 传递的请求体会设置Content-Type: form-data与后端对应
  })
}
/**
 * 获取文章列表
 * @param {*} param0 { pagenum: 当前页码数, pagesize: 当前页条数, cate_id: 文章分类id, state: 文章状态 }
 * @returns Promise对象
 */
export const getArticleListAPI = ({ pagenum, pagesize, cate_id, state }) => {
  return request({
    url: '/my/article/list',
    params: {
      pagenum,
      pagesize,
      cate_id,
      state
    }
  })
}
/**
 * 获取-文章详情
 * @param {*} id 文章id
 * @returns Promise对象
 */
export const getArticleDetailFn = (id) => {
  return request({
    url: '/my/article/info',
    params: {
      id
    }
  })
}
/**
 * 删除文章接口
 * @param {*} id 文章id
 * @returns Promise对象
 */
export const delArticleAPI = (id) => {
  return request({
    url: '/my/article/info',
    method: 'DELETE',
    params: {
      id
    }
  })
}
